\hypertarget{web_8h}{}\section{web/web.h File Reference}
\label{web_8h}\index{web/web.\+h@{web/web.\+h}}


Small web server for esp8266.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structhinfo__t}{hinfo\+\_\+t}
\item 
struct \hyperlink{structmem__t}{mem\+\_\+t}
\item 
struct \hyperlink{structheader__t}{header\+\_\+t}
\item 
struct \hyperlink{structmime__t}{mime\+\_\+t}
\item 
struct \hyperlink{structrwbuf__t}{rwbuf\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{web_8h_a053b7859476cc9867ec62c49e68d3fa1}{M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS}~1
\item 
\#define \hyperlink{web_8h_a51a214aeaf13aa7f3eac284e5a4fc93e}{I\+O\+\_\+\+M\+AX}~512
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct espconn \hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \{ \\*
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a6b4dfa1db88da421c74c30dc94c3ce53}{T\+O\+K\+E\+N\+\_\+\+G\+ET}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a2a1292bc924f34d6d69a7b71501ae73f}{T\+O\+K\+E\+N\+\_\+\+P\+UT}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a4cb258960bebf97073876d09836f1618}{T\+O\+K\+E\+N\+\_\+\+P\+O\+ST}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a7a543c7cf1ac077230c499a41c3a8a94}{T\+O\+K\+E\+N\+\_\+\+H\+E\+AD}, 
\\*
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a04d43499e4bc7c9f971f7a660d098ff1}{T\+O\+K\+E\+N\+\_\+\+H\+O\+ST}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a4e115a8a34594af0f253e8472cffe673}{T\+O\+K\+E\+N\+\_\+\+U\+S\+E\+R\+\_\+\+A\+G\+E\+NT}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ae47eb1ae54089e857fd7795282a7ae1d}{T\+O\+K\+E\+N\+\_\+\+H\+T\+T\+PS}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a37110324f9064d3a7e41029d572141d0}{T\+O\+K\+E\+N\+\_\+\+D\+NT}, 
\\*
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04af8b41aa43b046daa7c0ada29d27b7cdb}{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+PT}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a3fdcc37f74cb2179b65913891e1f02d8}{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+L\+A\+N\+G\+U\+A\+GE}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04add40d0810a662bffc6a5d437e2a86c10}{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+E\+N\+C\+O\+D\+I\+NG}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ad862c732a351f70da32231c9f4298d05}{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+ON}, 
\\*
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ab9bf3f747c7169a74f228b4f173c2bf4}{T\+O\+K\+E\+N\+\_\+\+R\+E\+F\+E\+R\+ER}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a727fe5423c611ba2fac22b301c60e962}{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+L\+E\+N\+G\+TH}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ad871a413f306c0544fd283658f046805}{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+T\+Y\+PE}, 
\hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a991253922f53b4456f895f846e82b946}{T\+O\+K\+E\+N\+\_\+\+C\+A\+C\+H\+E\+\_\+\+C\+O\+N\+T\+R\+OL}
 \}
\item 
enum \{ \\*
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca7e4a42e3b6dd63708c64cf3db6f69566}{S\+T\+A\+T\+U\+S\+\_\+\+OK} =200, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca75c8bace79d5c58050c2d93fd9de3c00}{S\+T\+A\+T\+U\+S\+\_\+\+C\+R\+E\+A\+T\+ED} =201, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca544ef68512445722eea8ab61cde6c830}{S\+T\+A\+T\+U\+S\+\_\+\+A\+C\+C\+E\+P\+T\+ED} =202, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca71bad6dd3a7a5c8299f3e3c80b45dc14}{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+\_\+\+C\+O\+N\+T\+E\+NT} =204, 
\\*
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca663e14e47f325e0a39cd97b9a3ea6fb9}{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+P\+E\+RM} =301, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06cad39f6bf4951a299bdb3ce9b8d26e253d}{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+T\+E\+MP} =302, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca241c5e2099d4e3033fb286faab004c5c}{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+M\+O\+D\+IF} =304, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca1879c295e29e4b52c2012c014cdc7f7a}{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+R\+EQ} =400, 
\\*
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06cab798bc2adfffcedc038bc7147872dedc}{S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+A\+U\+TH} =401, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06caf1a1b171197b10ee86c06ae98edbaf5e}{S\+T\+A\+T\+U\+S\+\_\+\+F\+O\+R\+B\+I\+D\+D\+EN} =403, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca5beadd7da049edbb6bbe9a9d50973ac8}{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+F\+O\+U\+ND} =404, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06caa4895f748a5cf4fbfc084fcc98bba90e}{S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+T\+\_\+\+S\+E\+RR} =500, 
\\*
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca70758246ac128854293bb3c9071a6b56}{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+I\+M\+PL} =501, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca11d58f99340eb2b9510382096f7019c5}{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+G\+A\+T\+E\+W\+AY} =502, 
\hyperlink{web_8h_adc29c2ff13d900c2f185ee95427fb06ca5426ee498d80d1ca30f1b81f86c39c31}{S\+T\+A\+T\+U\+S\+\_\+\+S\+E\+R\+V\+\_\+\+U\+N\+A\+V\+A\+IL} =503
 \}
\item 
enum \{ \\*
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea90b1e6aa374cea27cc6fb55c5feba5c6}{P\+T\+Y\+P\+E\+\_\+\+T\+E\+XT}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea4bd960e514f0585643742b8bd4b77f3b}{P\+T\+Y\+P\+E\+\_\+\+H\+T\+ML}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea30057776e71c48725f93b464b45c9a21}{P\+T\+Y\+P\+E\+\_\+\+P\+DF}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea319eff9f0f2a8e6f74c5a319fc1cb4e4}{P\+T\+Y\+P\+E\+\_\+\+C\+SS}, 
\\*
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea96590ec99e2f5ce52c16218c19441c77}{P\+T\+Y\+P\+E\+\_\+\+C\+GI}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea68ab53191252e14d5f4b4025b956cadf}{P\+T\+Y\+P\+E\+\_\+\+JS}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eae0868088fd938478331ae365e481a2d3}{P\+T\+Y\+P\+E\+\_\+\+X\+ML}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eacbda84af249fa4ef414b6b5c32eec998}{P\+T\+Y\+P\+E\+\_\+\+I\+CO}, 
\\*
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea30f126f9623d527070097095a12e69d6}{P\+T\+Y\+P\+E\+\_\+\+G\+IF}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eaabae39c4d39e7574d9e0459d6ada9675}{P\+T\+Y\+P\+E\+\_\+\+J\+P\+EG}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eae45f3c9fce9b5c96bf27fb291662b0cb}{P\+T\+Y\+P\+E\+\_\+\+M\+P\+EG}, 
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eafb13489a2aca6e1485d8f1b36aab9bd5}{P\+T\+Y\+P\+E\+\_\+\+F\+L\+A\+SH}, 
\\*
\hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea8a75b468753c30e47935e8db26c91680}{P\+T\+Y\+P\+E\+\_\+\+E\+RR}
 \}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a32080fe9d866898d9fb3dce10079b1ff}{web\+\_\+sep} (void)
\begin{DoxyCompactList}\small\item\em printer seperator \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a6b59ca0b6eea0b246eb56ae2b37ee2d8}{wait\+\_\+send} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Wait for buffer to send for this connection If write\+\_\+buffer sending flag is set then wait for it to clear. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_ab32eaeba7482e80dde268638c1514a6d}{write\+\_\+buffer} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Socket write buffer for this connection We wait for previous send to complete -\/ then send any new data We do not wait for new data to finish sending -\/ you use flush for that. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a5e0970f0d980f87fb5524a757f96fa84}{write\+\_\+flush} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Write all outstanding data and wait for it to send. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a50c911d56af7c50bc045cffb983d76f0}{write\+\_\+byte} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, int c)
\begin{DoxyCompactList}\small\item\em Write a byte (buffered) using the \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} socket buffers for this connection If the buffers are full the socket is written using write\+\_\+flush. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_aaaac061db0c7646d5b6c8bdfe3089ae7}{led\+\_\+on} (int led)
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_aec67a5a0b10a3ad2bbfe81de832ef239}{led\+\_\+off} (int led)
\begin{DoxyCompactList}\small\item\em Turn off virtual L\+ED. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_ac827567ee25b284c2992fed88249ab96}{rwbuf\+\_\+rinit} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Initialize socket read status and read index. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a6a137266340baece84e055b2d49cd0c2}{rwbuf\+\_\+winit} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Initialize socket send status and write index. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a89dceabcd370d352c3efed0e689fd551}{display\+\_\+ipv4} (char $\ast$msg, \hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$ip, int port)
\begin{DoxyCompactList}\small\item\em Display I\+P\+V4 address. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_af089b318dcc1ebbec17ae7392a19e457}{rwbuf\+\_\+delete} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Delete socket read/write buffers. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$ \hyperlink{web_8h_a0768c5077e8cfa177735808798193071}{rwbuf\+\_\+create} (void)
\begin{DoxyCompactList}\small\item\em Create socket read/write buffer for a connection. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$ \hyperlink{web_8h_a63cfcb009066f483330ec359b8493fbe}{find\+\_\+connection} (\hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t} $\ast$conn, int $\ast$index, char $\ast$msg)
\begin{DoxyCompactList}\small\item\em Find a read/write socket buffer for an espconn connection. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$ \hyperlink{web_8h_aef2853a921eb49702f064eaa925b16e1}{create\+\_\+connection} (\hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t} $\ast$conn)
\begin{DoxyCompactList}\small\item\em Allocate read/write socket buffers and add it to the working pool. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a7f82234178b3e152072e979c17b40af2}{delete\+\_\+connection} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Delete our main connection structure and connection buffers. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a751d54408d691ebc079108ffc42ee436}{write\+\_\+len} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, char $\ast$str, int len)
\begin{DoxyCompactList}\small\item\em Write data using buffered write\+\_\+byte function. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a2a5efc80e175181baf607f7f9a1358e5}{write\+\_\+str} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, char $\ast$str)
\begin{DoxyCompactList}\small\item\em Write string using buffered write\+\_\+byte function. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a912affa80386fb06e19c3ce5342701f5}{vsock\+\_\+printf} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, const char $\ast$fmt, va\+\_\+list va)
\begin{DoxyCompactList}\small\item\em vsock\+\_\+printf function \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a38a7c7d1f5222edff77e9a7a20195696}{sock\+\_\+printf} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, const char $\ast$fmt,...)
\begin{DoxyCompactList}\small\item\em sock\+\_\+printf function \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a5cb82637d6d97812355aaa7a7fb4ccbe}{html\+\_\+msg} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, int status, char type, char $\ast$fmt,...)
\begin{DoxyCompactList}\small\item\em Send an H\+T\+ML status message to socket. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_a2ea8a8e37ac5c7099311e4d9cdb77efb}{meminit} (\hyperlink{structmem__t}{mem\+\_\+t} $\ast$p, char $\ast$ptr, int size)
\begin{DoxyCompactList}\small\item\em in memory memory gets function \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_ad834fe4d9506060f80d873fb20c186d5}{memgets} (\hyperlink{structmem__t}{mem\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Memory gets function We A\+S\+S\+U\+ME we can replace any ~\newline
 with a \textbackslash{}0. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_ae16ca93f35df1d6e5040aa464fec44ab}{mime\+\_\+type} (int type)
\begin{DoxyCompactList}\small\item\em return strung pointer for mime type index \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_aec5e03bbb08e40de50b3da6413e26931}{file\+\_\+type} (char $\ast$name)
\begin{DoxyCompactList}\small\item\em Determin mimetype using file name extension. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_aeebdbab253618d52a35054978fe4bb0e}{html\+\_\+status} (int status)
\begin{DoxyCompactList}\small\item\em Convert html status into string using http\+\_\+status table. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a9022b922953aabe534b7b68e6f3a90af}{init\+\_\+hinfo} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a93274f0048175d7ed429598e951a2c77}{match\+\_\+headers} (char $\ast$str, char $\ast$$\ast$p)
\begin{DoxyCompactList}\small\item\em Match G\+E\+T/\+P\+O\+ST message headers. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_ab29b4d9382acde5a32fa0aad1068c38b}{process\+\_\+args} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi, char $\ast$ptr)
\begin{DoxyCompactList}\small\item\em Process G\+ET argments or P\+O\+ST message name/value data. H\+T\+ML encoding is done in place often reducting the size of the result. Convert name=value pairs into null terminated strings. Names and values are each terminated with an E\+OS by replaceing \textquotesingle{}?\textquotesingle{}, \textquotesingle{}\&\textquotesingle{}, \textquotesingle{}=\textquotesingle{} characters seen while scaning. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_afb148431af519ffd7c3191ed3edd4d50}{first\+\_\+arg} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Find first P\+O\+S\+T/\+G\+ET argument. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_ac2b1c83b2901da05a13fbc48e9c9f030}{next\+\_\+arg} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Find next P\+O\+S\+T/\+G\+ET argument We have to skip a name and a value. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_a35cc0d5292df6d1df5cf3ea63e44d0b7}{arg\+\_\+name} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Return the argument name for current argument. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_a12e823b35aaf4392e282d39057f45eb8}{arg\+\_\+value} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Return the argument value for current argument. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_a142e7c44af77016bb329676f4466da7e}{http\+\_\+value} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi, char $\ast$str)
\begin{DoxyCompactList}\small\item\em Lookup and argument name and return its value. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_aac0e14d0751e24b7143060600fe7822a}{is\+\_\+header} (char $\ast$str, char $\ast$$\ast$p)
\begin{DoxyCompactList}\small\item\em Does the string look like a header token with a \textquotesingle{}\+:\textquotesingle{} ? \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8h_a1723d513f866e03e8195adf0139b1603}{nextbreak} (char $\ast$ptr)
\begin{DoxyCompactList}\small\item\em Find next space or ? character. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a099953c3f11ff53e89c99b0be5212b70}{u5toa} (char $\ast$ptr, \hyperlink{send_8c_a273cf69d639a59973b6019625df33e30}{uint16\+\_\+t} num)
\begin{DoxyCompactList}\small\item\em Print a decimal number into a string without an E\+OS. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_acfdd7b32cc9e6b5214ddbf8120a9ed7b}{html\+\_\+head} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, int status, char type, int len)
\begin{DoxyCompactList}\small\item\em Write H\+T\+TP Contenet-\/\+Type/\+Content-\/\+Length header. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a574da7d2e02f16c3ff0727061b90c46c}{parse\+\_\+http\+\_\+request} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, \hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Get arguments for a G\+ET or P\+O\+ST request. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a4abb48d4494fe24bdb3966a30a380f94}{is\+\_\+cgitoken\+\_\+char} (int c)
\begin{DoxyCompactList}\small\item\em test to see if a character is a valid member of the C\+GI token character set C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a1923a5ddca00d254e13a605602f68972}{find\+\_\+cgitoken\+\_\+start} (char $\ast$str)
\begin{DoxyCompactList}\small\item\em Find start of C\+GI token in a string C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} param\mbox{[}in\mbox{]} $\ast$str\+: string to search. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_a048ebac3422330a50ba449d817ff49d8}{is\+\_\+cgitoken} (char $\ast$str)
\begin{DoxyCompactList}\small\item\em Does the string have a C\+GI T\+O\+K\+EN at the beginning ? C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8h_abfb5be0ab21dfe56bc934a8965154384}{rewrite\+\_\+cgi\+\_\+token} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, char $\ast$src)
\begin{DoxyCompactList}\small\item\em Replace C\+GI token with C\+GI result C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a8914bb442212946291b6afbf4f3e728e}{web\+\_\+task} (void)
\begin{DoxyCompactList}\small\item\em Process A\+LL incoming H\+T\+TP requests. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_a0981a27ccb83326c4e96a0859f6511b5}{web\+\_\+init\+\_\+connections} (void)
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8h_aa7a1c2f567713688983ddecf9fa0d8d6}{web\+\_\+init} (int port)
\begin{DoxyCompactList}\small\item\em Setup W\+EB server and accept connections. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Small web server for esp8266. 

\begin{DoxyParagraph}{Copyright \copyright{} 2015 Mike Gore, G\+PL License}

\end{DoxyParagraph}
\begin{DoxyParagraph}{You are free to use this code under the terms of G\+PL}
please retain a copy of this notice in any code you use it in.
\end{DoxyParagraph}
This is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU General Public License for more details.

You should have received a copy of the G\+NU General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. 

\subsection{Macro Definition Documentation}
\index{web.\+h@{web.\+h}!I\+O\+\_\+\+M\+AX@{I\+O\+\_\+\+M\+AX}}
\index{I\+O\+\_\+\+M\+AX@{I\+O\+\_\+\+M\+AX}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{I\+O\+\_\+\+M\+AX}{IO_MAX}}]{\setlength{\rightskip}{0pt plus 5cm}\#define I\+O\+\_\+\+M\+AX~512}\hypertarget{web_8h_a51a214aeaf13aa7f3eac284e5a4fc93e}{}\label{web_8h_a51a214aeaf13aa7f3eac284e5a4fc93e}


Definition at line 65 of file web.\+h.

\index{web.\+h@{web.\+h}!M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS@{M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS}}
\index{M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS@{M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS}{MAX_CONNECTIONS}}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS~1}\hypertarget{web_8h_a053b7859476cc9867ec62c49e68d3fa1}{}\label{web_8h_a053b7859476cc9867ec62c49e68d3fa1}


Definition at line 31 of file web.\+h.



Referenced by create\+\_\+connection(), delete\+\_\+connection(), find\+\_\+connection(), setup(), and tcp\+\_\+accept().



\subsection{Typedef Documentation}
\index{web.\+h@{web.\+h}!espconn\+\_\+t@{espconn\+\_\+t}}
\index{espconn\+\_\+t@{espconn\+\_\+t}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{espconn\+\_\+t}{espconn_t}}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct espconn {\bf espconn\+\_\+t}}\hypertarget{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{}\label{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}


Definition at line 27 of file web.\+h.



\subsection{Enumeration Type Documentation}
\subsubsection[{\texorpdfstring{anonymous enum}{anonymous enum}}]{\setlength{\rightskip}{0pt plus 5cm}anonymous enum}\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04}
\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{T\+O\+K\+E\+N\+\_\+\+G\+ET@{T\+O\+K\+E\+N\+\_\+\+G\+ET}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+G\+ET@{T\+O\+K\+E\+N\+\_\+\+G\+ET}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+G\+ET\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a6b4dfa1db88da421c74c30dc94c3ce53}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a6b4dfa1db88da421c74c30dc94c3ce53}
}]\index{T\+O\+K\+E\+N\+\_\+\+P\+UT@{T\+O\+K\+E\+N\+\_\+\+P\+UT}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+P\+UT@{T\+O\+K\+E\+N\+\_\+\+P\+UT}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+P\+UT\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a2a1292bc924f34d6d69a7b71501ae73f}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a2a1292bc924f34d6d69a7b71501ae73f}
}]\index{T\+O\+K\+E\+N\+\_\+\+P\+O\+ST@{T\+O\+K\+E\+N\+\_\+\+P\+O\+ST}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+P\+O\+ST@{T\+O\+K\+E\+N\+\_\+\+P\+O\+ST}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+P\+O\+ST\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a4cb258960bebf97073876d09836f1618}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a4cb258960bebf97073876d09836f1618}
}]\index{T\+O\+K\+E\+N\+\_\+\+H\+E\+AD@{T\+O\+K\+E\+N\+\_\+\+H\+E\+AD}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+H\+E\+AD@{T\+O\+K\+E\+N\+\_\+\+H\+E\+AD}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+H\+E\+AD\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a7a543c7cf1ac077230c499a41c3a8a94}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a7a543c7cf1ac077230c499a41c3a8a94}
}]\index{T\+O\+K\+E\+N\+\_\+\+H\+O\+ST@{T\+O\+K\+E\+N\+\_\+\+H\+O\+ST}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+H\+O\+ST@{T\+O\+K\+E\+N\+\_\+\+H\+O\+ST}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+H\+O\+ST\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a04d43499e4bc7c9f971f7a660d098ff1}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a04d43499e4bc7c9f971f7a660d098ff1}
}]\index{T\+O\+K\+E\+N\+\_\+\+U\+S\+E\+R\+\_\+\+A\+G\+E\+NT@{T\+O\+K\+E\+N\+\_\+\+U\+S\+E\+R\+\_\+\+A\+G\+E\+NT}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+U\+S\+E\+R\+\_\+\+A\+G\+E\+NT@{T\+O\+K\+E\+N\+\_\+\+U\+S\+E\+R\+\_\+\+A\+G\+E\+NT}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+U\+S\+E\+R\+\_\+\+A\+G\+E\+NT\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a4e115a8a34594af0f253e8472cffe673}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a4e115a8a34594af0f253e8472cffe673}
}]\index{T\+O\+K\+E\+N\+\_\+\+H\+T\+T\+PS@{T\+O\+K\+E\+N\+\_\+\+H\+T\+T\+PS}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+H\+T\+T\+PS@{T\+O\+K\+E\+N\+\_\+\+H\+T\+T\+PS}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+H\+T\+T\+PS\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04ae47eb1ae54089e857fd7795282a7ae1d}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04ae47eb1ae54089e857fd7795282a7ae1d}
}]\index{T\+O\+K\+E\+N\+\_\+\+D\+NT@{T\+O\+K\+E\+N\+\_\+\+D\+NT}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+D\+NT@{T\+O\+K\+E\+N\+\_\+\+D\+NT}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+D\+NT\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a37110324f9064d3a7e41029d572141d0}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a37110324f9064d3a7e41029d572141d0}
}]\index{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+PT@{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+PT}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+PT@{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+PT}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+PT\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04af8b41aa43b046daa7c0ada29d27b7cdb}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04af8b41aa43b046daa7c0ada29d27b7cdb}
}]\index{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+L\+A\+N\+G\+U\+A\+GE@{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+L\+A\+N\+G\+U\+A\+GE}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+L\+A\+N\+G\+U\+A\+GE@{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+L\+A\+N\+G\+U\+A\+GE}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+L\+A\+N\+G\+U\+A\+GE\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a3fdcc37f74cb2179b65913891e1f02d8}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a3fdcc37f74cb2179b65913891e1f02d8}
}]\index{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+E\+N\+C\+O\+D\+I\+NG@{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+E\+N\+C\+O\+D\+I\+NG}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+E\+N\+C\+O\+D\+I\+NG@{T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+E\+N\+C\+O\+D\+I\+NG}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+A\+C\+C\+E\+P\+T\+\_\+\+E\+N\+C\+O\+D\+I\+NG\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04add40d0810a662bffc6a5d437e2a86c10}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04add40d0810a662bffc6a5d437e2a86c10}
}]\index{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+ON@{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+ON}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+ON@{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+ON}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+ON\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04ad862c732a351f70da32231c9f4298d05}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04ad862c732a351f70da32231c9f4298d05}
}]\index{T\+O\+K\+E\+N\+\_\+\+R\+E\+F\+E\+R\+ER@{T\+O\+K\+E\+N\+\_\+\+R\+E\+F\+E\+R\+ER}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+R\+E\+F\+E\+R\+ER@{T\+O\+K\+E\+N\+\_\+\+R\+E\+F\+E\+R\+ER}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+R\+E\+F\+E\+R\+ER\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04ab9bf3f747c7169a74f228b4f173c2bf4}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04ab9bf3f747c7169a74f228b4f173c2bf4}
}]\index{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+L\+E\+N\+G\+TH@{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+L\+E\+N\+G\+TH}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+L\+E\+N\+G\+TH@{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+L\+E\+N\+G\+TH}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+L\+E\+N\+G\+TH\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a727fe5423c611ba2fac22b301c60e962}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a727fe5423c611ba2fac22b301c60e962}
}]\index{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+T\+Y\+PE@{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+T\+Y\+PE}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+T\+Y\+PE@{T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+T\+Y\+PE}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+C\+O\+N\+T\+E\+N\+T\+\_\+\+T\+Y\+PE\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04ad871a413f306c0544fd283658f046805}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04ad871a413f306c0544fd283658f046805}
}]\index{T\+O\+K\+E\+N\+\_\+\+C\+A\+C\+H\+E\+\_\+\+C\+O\+N\+T\+R\+OL@{T\+O\+K\+E\+N\+\_\+\+C\+A\+C\+H\+E\+\_\+\+C\+O\+N\+T\+R\+OL}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!T\+O\+K\+E\+N\+\_\+\+C\+A\+C\+H\+E\+\_\+\+C\+O\+N\+T\+R\+OL@{T\+O\+K\+E\+N\+\_\+\+C\+A\+C\+H\+E\+\_\+\+C\+O\+N\+T\+R\+OL}}\item[{\em 
T\+O\+K\+E\+N\+\_\+\+C\+A\+C\+H\+E\+\_\+\+C\+O\+N\+T\+R\+OL\hypertarget{web_8h_abc6126af1d45847bc59afa0aa3216b04a991253922f53b4456f895f846e82b946}{}\label{web_8h_abc6126af1d45847bc59afa0aa3216b04a991253922f53b4456f895f846e82b946}
}]\end{description}
\end{Desc}


Definition at line 68 of file web.\+h.

\subsubsection[{\texorpdfstring{anonymous enum}{anonymous enum}}]{\setlength{\rightskip}{0pt plus 5cm}anonymous enum}\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06c}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06c}
\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{S\+T\+A\+T\+U\+S\+\_\+\+OK@{S\+T\+A\+T\+U\+S\+\_\+\+OK}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+OK@{S\+T\+A\+T\+U\+S\+\_\+\+OK}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+OK\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca7e4a42e3b6dd63708c64cf3db6f69566}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca7e4a42e3b6dd63708c64cf3db6f69566}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+C\+R\+E\+A\+T\+ED@{S\+T\+A\+T\+U\+S\+\_\+\+C\+R\+E\+A\+T\+ED}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+C\+R\+E\+A\+T\+ED@{S\+T\+A\+T\+U\+S\+\_\+\+C\+R\+E\+A\+T\+ED}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+C\+R\+E\+A\+T\+ED\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca75c8bace79d5c58050c2d93fd9de3c00}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca75c8bace79d5c58050c2d93fd9de3c00}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+A\+C\+C\+E\+P\+T\+ED@{S\+T\+A\+T\+U\+S\+\_\+\+A\+C\+C\+E\+P\+T\+ED}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+A\+C\+C\+E\+P\+T\+ED@{S\+T\+A\+T\+U\+S\+\_\+\+A\+C\+C\+E\+P\+T\+ED}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+A\+C\+C\+E\+P\+T\+ED\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca544ef68512445722eea8ab61cde6c830}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca544ef68512445722eea8ab61cde6c830}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+\_\+\+C\+O\+N\+T\+E\+NT@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+\_\+\+C\+O\+N\+T\+E\+NT}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+\_\+\+C\+O\+N\+T\+E\+NT@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+\_\+\+C\+O\+N\+T\+E\+NT}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+\_\+\+C\+O\+N\+T\+E\+NT\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca71bad6dd3a7a5c8299f3e3c80b45dc14}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca71bad6dd3a7a5c8299f3e3c80b45dc14}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+P\+E\+RM@{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+P\+E\+RM}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+P\+E\+RM@{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+P\+E\+RM}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+P\+E\+RM\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca663e14e47f325e0a39cd97b9a3ea6fb9}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca663e14e47f325e0a39cd97b9a3ea6fb9}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+T\+E\+MP@{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+T\+E\+MP}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+T\+E\+MP@{S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+T\+E\+MP}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+M\+V\+\_\+\+T\+E\+MP\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06cad39f6bf4951a299bdb3ce9b8d26e253d}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06cad39f6bf4951a299bdb3ce9b8d26e253d}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+M\+O\+D\+IF@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+M\+O\+D\+IF}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+M\+O\+D\+IF@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+M\+O\+D\+IF}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+M\+O\+D\+IF\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca241c5e2099d4e3033fb286faab004c5c}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca241c5e2099d4e3033fb286faab004c5c}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+R\+EQ@{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+R\+EQ}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+R\+EQ@{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+R\+EQ}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+R\+EQ\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca1879c295e29e4b52c2012c014cdc7f7a}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca1879c295e29e4b52c2012c014cdc7f7a}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+A\+U\+TH@{S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+A\+U\+TH}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+A\+U\+TH@{S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+A\+U\+TH}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+A\+U\+TH\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06cab798bc2adfffcedc038bc7147872dedc}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06cab798bc2adfffcedc038bc7147872dedc}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+F\+O\+R\+B\+I\+D\+D\+EN@{S\+T\+A\+T\+U\+S\+\_\+\+F\+O\+R\+B\+I\+D\+D\+EN}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+F\+O\+R\+B\+I\+D\+D\+EN@{S\+T\+A\+T\+U\+S\+\_\+\+F\+O\+R\+B\+I\+D\+D\+EN}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+F\+O\+R\+B\+I\+D\+D\+EN\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06caf1a1b171197b10ee86c06ae98edbaf5e}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06caf1a1b171197b10ee86c06ae98edbaf5e}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+F\+O\+U\+ND@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+F\+O\+U\+ND}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+F\+O\+U\+ND@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+F\+O\+U\+ND}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+F\+O\+U\+ND\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca5beadd7da049edbb6bbe9a9d50973ac8}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca5beadd7da049edbb6bbe9a9d50973ac8}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+T\+\_\+\+S\+E\+RR@{S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+T\+\_\+\+S\+E\+RR}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+T\+\_\+\+S\+E\+RR@{S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+T\+\_\+\+S\+E\+RR}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+T\+\_\+\+S\+E\+RR\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06caa4895f748a5cf4fbfc084fcc98bba90e}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06caa4895f748a5cf4fbfc084fcc98bba90e}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+I\+M\+PL@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+I\+M\+PL}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+I\+M\+PL@{S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+I\+M\+PL}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+I\+M\+PL\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca70758246ac128854293bb3c9071a6b56}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca70758246ac128854293bb3c9071a6b56}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+G\+A\+T\+E\+W\+AY@{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+G\+A\+T\+E\+W\+AY}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+G\+A\+T\+E\+W\+AY@{S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+G\+A\+T\+E\+W\+AY}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+B\+A\+D\+\_\+\+G\+A\+T\+E\+W\+AY\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca11d58f99340eb2b9510382096f7019c5}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca11d58f99340eb2b9510382096f7019c5}
}]\index{S\+T\+A\+T\+U\+S\+\_\+\+S\+E\+R\+V\+\_\+\+U\+N\+A\+V\+A\+IL@{S\+T\+A\+T\+U\+S\+\_\+\+S\+E\+R\+V\+\_\+\+U\+N\+A\+V\+A\+IL}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!S\+T\+A\+T\+U\+S\+\_\+\+S\+E\+R\+V\+\_\+\+U\+N\+A\+V\+A\+IL@{S\+T\+A\+T\+U\+S\+\_\+\+S\+E\+R\+V\+\_\+\+U\+N\+A\+V\+A\+IL}}\item[{\em 
S\+T\+A\+T\+U\+S\+\_\+\+S\+E\+R\+V\+\_\+\+U\+N\+A\+V\+A\+IL\hypertarget{web_8h_adc29c2ff13d900c2f185ee95427fb06ca5426ee498d80d1ca30f1b81f86c39c31}{}\label{web_8h_adc29c2ff13d900c2f185ee95427fb06ca5426ee498d80d1ca30f1b81f86c39c31}
}]\end{description}
\end{Desc}


Definition at line 99 of file web.\+h.

\subsubsection[{\texorpdfstring{anonymous enum}{anonymous enum}}]{\setlength{\rightskip}{0pt plus 5cm}anonymous enum}\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9e}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9e}
\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{P\+T\+Y\+P\+E\+\_\+\+T\+E\+XT@{P\+T\+Y\+P\+E\+\_\+\+T\+E\+XT}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+T\+E\+XT@{P\+T\+Y\+P\+E\+\_\+\+T\+E\+XT}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+T\+E\+XT\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea90b1e6aa374cea27cc6fb55c5feba5c6}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea90b1e6aa374cea27cc6fb55c5feba5c6}
}]\index{P\+T\+Y\+P\+E\+\_\+\+H\+T\+ML@{P\+T\+Y\+P\+E\+\_\+\+H\+T\+ML}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+H\+T\+ML@{P\+T\+Y\+P\+E\+\_\+\+H\+T\+ML}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+H\+T\+ML\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea4bd960e514f0585643742b8bd4b77f3b}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea4bd960e514f0585643742b8bd4b77f3b}
}]\index{P\+T\+Y\+P\+E\+\_\+\+P\+DF@{P\+T\+Y\+P\+E\+\_\+\+P\+DF}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+P\+DF@{P\+T\+Y\+P\+E\+\_\+\+P\+DF}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+P\+DF\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea30057776e71c48725f93b464b45c9a21}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea30057776e71c48725f93b464b45c9a21}
}]\index{P\+T\+Y\+P\+E\+\_\+\+C\+SS@{P\+T\+Y\+P\+E\+\_\+\+C\+SS}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+C\+SS@{P\+T\+Y\+P\+E\+\_\+\+C\+SS}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+C\+SS\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea319eff9f0f2a8e6f74c5a319fc1cb4e4}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea319eff9f0f2a8e6f74c5a319fc1cb4e4}
}]\index{P\+T\+Y\+P\+E\+\_\+\+C\+GI@{P\+T\+Y\+P\+E\+\_\+\+C\+GI}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+C\+GI@{P\+T\+Y\+P\+E\+\_\+\+C\+GI}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+C\+GI\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea96590ec99e2f5ce52c16218c19441c77}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea96590ec99e2f5ce52c16218c19441c77}
}]\index{P\+T\+Y\+P\+E\+\_\+\+JS@{P\+T\+Y\+P\+E\+\_\+\+JS}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+JS@{P\+T\+Y\+P\+E\+\_\+\+JS}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+JS\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea68ab53191252e14d5f4b4025b956cadf}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea68ab53191252e14d5f4b4025b956cadf}
}]\index{P\+T\+Y\+P\+E\+\_\+\+X\+ML@{P\+T\+Y\+P\+E\+\_\+\+X\+ML}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+X\+ML@{P\+T\+Y\+P\+E\+\_\+\+X\+ML}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+X\+ML\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9eae0868088fd938478331ae365e481a2d3}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9eae0868088fd938478331ae365e481a2d3}
}]\index{P\+T\+Y\+P\+E\+\_\+\+I\+CO@{P\+T\+Y\+P\+E\+\_\+\+I\+CO}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+I\+CO@{P\+T\+Y\+P\+E\+\_\+\+I\+CO}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+I\+CO\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9eacbda84af249fa4ef414b6b5c32eec998}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9eacbda84af249fa4ef414b6b5c32eec998}
}]\index{P\+T\+Y\+P\+E\+\_\+\+G\+IF@{P\+T\+Y\+P\+E\+\_\+\+G\+IF}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+G\+IF@{P\+T\+Y\+P\+E\+\_\+\+G\+IF}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+G\+IF\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea30f126f9623d527070097095a12e69d6}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea30f126f9623d527070097095a12e69d6}
}]\index{P\+T\+Y\+P\+E\+\_\+\+J\+P\+EG@{P\+T\+Y\+P\+E\+\_\+\+J\+P\+EG}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+J\+P\+EG@{P\+T\+Y\+P\+E\+\_\+\+J\+P\+EG}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+J\+P\+EG\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9eaabae39c4d39e7574d9e0459d6ada9675}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9eaabae39c4d39e7574d9e0459d6ada9675}
}]\index{P\+T\+Y\+P\+E\+\_\+\+M\+P\+EG@{P\+T\+Y\+P\+E\+\_\+\+M\+P\+EG}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+M\+P\+EG@{P\+T\+Y\+P\+E\+\_\+\+M\+P\+EG}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+M\+P\+EG\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9eae45f3c9fce9b5c96bf27fb291662b0cb}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9eae45f3c9fce9b5c96bf27fb291662b0cb}
}]\index{P\+T\+Y\+P\+E\+\_\+\+F\+L\+A\+SH@{P\+T\+Y\+P\+E\+\_\+\+F\+L\+A\+SH}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+F\+L\+A\+SH@{P\+T\+Y\+P\+E\+\_\+\+F\+L\+A\+SH}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+F\+L\+A\+SH\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9eafb13489a2aca6e1485d8f1b36aab9bd5}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9eafb13489a2aca6e1485d8f1b36aab9bd5}
}]\index{P\+T\+Y\+P\+E\+\_\+\+E\+RR@{P\+T\+Y\+P\+E\+\_\+\+E\+RR}!web.\+h@{web.\+h}}\index{web.\+h@{web.\+h}!P\+T\+Y\+P\+E\+\_\+\+E\+RR@{P\+T\+Y\+P\+E\+\_\+\+E\+RR}}\item[{\em 
P\+T\+Y\+P\+E\+\_\+\+E\+RR\hypertarget{web_8h_a61dadd085c1777f559549e05962b2c9ea8a75b468753c30e47935e8db26c91680}{}\label{web_8h_a61dadd085c1777f559549e05962b2c9ea8a75b468753c30e47935e8db26c91680}
}]\end{description}
\end{Desc}


Definition at line 117 of file web.\+h.



\subsection{Function Documentation}
\index{web.\+h@{web.\+h}!arg\+\_\+name@{arg\+\_\+name}}
\index{arg\+\_\+name@{arg\+\_\+name}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{arg\+\_\+name(hinfo\+\_\+t $\ast$hi)}{arg_name(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ arg\+\_\+name (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a35cc0d5292df6d1df5cf3ea63e44d0b7}{}\label{web_8h_a35cc0d5292df6d1df5cf3ea63e44d0b7}


Return the argument name for current argument. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument name 
\end{DoxyReturn}


Definition at line 1298 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!arg\+\_\+value@{arg\+\_\+value}}
\index{arg\+\_\+value@{arg\+\_\+value}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{arg\+\_\+value(hinfo\+\_\+t $\ast$hi)}{arg_value(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ arg\+\_\+value (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a12e823b35aaf4392e282d39057f45eb8}{}\label{web_8h_a12e823b35aaf4392e282d39057f45eb8}


Return the argument value for current argument. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value 
\end{DoxyReturn}


Definition at line 1346 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!create\+\_\+connection@{create\+\_\+connection}}
\index{create\+\_\+connection@{create\+\_\+connection}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{create\+\_\+connection(espconn\+\_\+t $\ast$conn)}{create_connection(espconn_t *conn)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} {\bf rwbuf\+\_\+t}$\ast$ create\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf espconn\+\_\+t} $\ast$}]{conn}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_aef2853a921eb49702f064eaa925b16e1}{}\label{web_8h_aef2853a921eb49702f064eaa925b16e1}


Allocate read/write socket buffers and add it to the working pool. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em conn} & espconn pointer for this connection \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to created structure 
\end{DoxyReturn}


Definition at line 669 of file web.\+c.



Referenced by web\+\_\+data\+\_\+connect\+\_\+callback().

\index{web.\+h@{web.\+h}!delete\+\_\+connection@{delete\+\_\+connection}}
\index{delete\+\_\+connection@{delete\+\_\+connection}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{delete\+\_\+connection(rwbuf\+\_\+t $\ast$p)}{delete_connection(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int delete\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a7f82234178b3e152072e979c17b40af2}{}\label{web_8h_a7f82234178b3e152072e979c17b40af2}


Delete our main connection structure and connection buffers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer \\
\hline
\end{DoxyParams}


Definition at line 715 of file web.\+c.



Referenced by web\+\_\+data\+\_\+disconnect\+\_\+callback().

\index{web.\+h@{web.\+h}!display\+\_\+ipv4@{display\+\_\+ipv4}}
\index{display\+\_\+ipv4@{display\+\_\+ipv4}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{display\+\_\+ipv4(char $\ast$msg, uint8\+\_\+t $\ast$ip, int port)}{display_ipv4(char *msg, uint8_t *ip, int port)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void display\+\_\+ipv4 (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{msg, }
\item[{{\bf uint8\+\_\+t} $\ast$}]{ip, }
\item[{int}]{port}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a89dceabcd370d352c3efed0e689fd551}{}\label{web_8h_a89dceabcd370d352c3efed0e689fd551}


Display I\+P\+V4 address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em msg} & user supplied message \\
\hline
\mbox{\tt in}  & {\em ip} & IP address as uint8\+\_\+t \mbox{[}4\mbox{]} \\
\hline
\mbox{\tt in}  & {\em port} & Port number \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 470 of file web.\+c.



Referenced by delete\+\_\+connection(), find\+\_\+connection(), web\+\_\+data\+\_\+connect\+\_\+callback(), web\+\_\+data\+\_\+disconnect\+\_\+callback(), web\+\_\+data\+\_\+error\+\_\+callback(), web\+\_\+data\+\_\+receive\+\_\+callback(), and web\+\_\+data\+\_\+sent\+\_\+callback().

\index{web.\+h@{web.\+h}!file\+\_\+type@{file\+\_\+type}}
\index{file\+\_\+type@{file\+\_\+type}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{file\+\_\+type(char $\ast$name)}{file_type(char *name)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int file\+\_\+type (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{name}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_aec5e03bbb08e40de50b3da6413e26931}{}\label{web_8h_aec5e03bbb08e40de50b3da6413e26931}


Determin mimetype using file name extension. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$name} & name to test \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
index into mimetype table 
\end{DoxyReturn}


Definition at line 996 of file web.\+c.

\index{web.\+h@{web.\+h}!find\+\_\+cgitoken\+\_\+start@{find\+\_\+cgitoken\+\_\+start}}
\index{find\+\_\+cgitoken\+\_\+start@{find\+\_\+cgitoken\+\_\+start}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{find\+\_\+cgitoken\+\_\+start(char $\ast$str)}{find_cgitoken_start(char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int find\+\_\+cgitoken\+\_\+start (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a1923a5ddca00d254e13a605602f68972}{}\label{web_8h_a1923a5ddca00d254e13a605602f68972}


Find start of C\+GI token in a string C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} param\mbox{[}in\mbox{]} $\ast$str\+: string to search. 

\begin{DoxyReturn}{Returns}
offset of start of token, or -\/1 if not found 
\end{DoxyReturn}


Definition at line 2024 of file web.\+c.

\index{web.\+h@{web.\+h}!find\+\_\+connection@{find\+\_\+connection}}
\index{find\+\_\+connection@{find\+\_\+connection}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{find\+\_\+connection(espconn\+\_\+t $\ast$conn, int $\ast$index, char $\ast$msg)}{find_connection(espconn_t *conn, int *index, char *msg)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} {\bf rwbuf\+\_\+t}$\ast$ find\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf espconn\+\_\+t} $\ast$}]{conn, }
\item[{int $\ast$}]{index, }
\item[{char $\ast$}]{msg}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a63cfcb009066f483330ec359b8493fbe}{}\label{web_8h_a63cfcb009066f483330ec359b8493fbe}


Find a read/write socket buffer for an espconn connection. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em conn} & espconn pointer for this connection \\
\hline
\mbox{\tt in}  & {\em $\ast$index} & return index into pool of \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} connections \\
\hline
\mbox{\tt in}  & {\em $\ast$msg} & user debug message \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to found connection with $\ast$index set, or N\+U\+LL with $\ast$index == -\/1 on failure 
\end{DoxyReturn}


Definition at line 590 of file web.\+c.



Referenced by web\+\_\+data\+\_\+disconnect\+\_\+callback(), web\+\_\+data\+\_\+error\+\_\+callback(), web\+\_\+data\+\_\+receive\+\_\+callback(), and web\+\_\+data\+\_\+sent\+\_\+callback().

\index{web.\+h@{web.\+h}!first\+\_\+arg@{first\+\_\+arg}}
\index{first\+\_\+arg@{first\+\_\+arg}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{first\+\_\+arg(hinfo\+\_\+t $\ast$hi)}{first_arg(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ first\+\_\+arg (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_afb148431af519ffd7c3191ed3edd4d50}{}\label{web_8h_afb148431af519ffd7c3191ed3edd4d50}


Find first P\+O\+S\+T/\+G\+ET argument. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value pair 
\end{DoxyReturn}


Definition at line 1235 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!html\+\_\+head@{html\+\_\+head}}
\index{html\+\_\+head@{html\+\_\+head}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{html\+\_\+head(rwbuf\+\_\+t $\ast$p, int status, char type, int len)}{html_head(rwbuf_t *p, int status, char type, int len)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void html\+\_\+head (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{int}]{status, }
\item[{char}]{type, }
\item[{int}]{len}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_acfdd7b32cc9e6b5214ddbf8120a9ed7b}{}\label{web_8h_acfdd7b32cc9e6b5214ddbf8120a9ed7b}


Write H\+T\+TP Contenet-\/\+Type/\+Content-\/\+Length header. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to socket buffer \\
\hline
\mbox{\tt in}  & {\em status} & html status message index \\
\hline
\mbox{\tt in}  & {\em type} & mimetype index \\
\hline
\mbox{\tt in}  & {\em len} & length of message \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 1518 of file web.\+c.

\index{web.\+h@{web.\+h}!html\+\_\+msg@{html\+\_\+msg}}
\index{html\+\_\+msg@{html\+\_\+msg}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{html\+\_\+msg(rwbuf\+\_\+t $\ast$p, int status, char type, char $\ast$fmt,...)}{html_msg(rwbuf_t *p, int status, char type, char *fmt,...)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int html\+\_\+msg (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{int}]{status, }
\item[{char}]{type, }
\item[{char $\ast$}]{fmt, }
\item[{}]{...}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a5cb82637d6d97812355aaa7a7fb4ccbe}{}\label{web_8h_a5cb82637d6d97812355aaa7a7fb4ccbe}


Send an H\+T\+ML status message to socket. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & socket buffer structure \\
\hline
\mbox{\tt in}  & {\em status} & index into http\+\_\+status table \\
\hline
\mbox{\tt in}  & {\em type} & mime type index \\
\hline
\mbox{\tt in}  & {\em fmt} & printf format string \\
\hline
\mbox{\tt in}  & {\em ...} & list of arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
bytes written, 0 on wrror 
\end{DoxyReturn}


Definition at line 853 of file web.\+c.

\index{web.\+h@{web.\+h}!html\+\_\+status@{html\+\_\+status}}
\index{html\+\_\+status@{html\+\_\+status}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{html\+\_\+status(int status)}{html_status(int status)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ html\+\_\+status (
\begin{DoxyParamCaption}
\item[{int}]{status}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_aeebdbab253618d52a35054978fe4bb0e}{}\label{web_8h_aeebdbab253618d52a35054978fe4bb0e}


Convert html status into string using http\+\_\+status table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em status} & html status number \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
http\+\_\+status entry mathing status, or 500 Internal Server Error 
\end{DoxyReturn}


Definition at line 1030 of file web.\+c.



Referenced by html\+\_\+head(), and html\+\_\+msg().

\index{web.\+h@{web.\+h}!http\+\_\+value@{http\+\_\+value}}
\index{http\+\_\+value@{http\+\_\+value}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{http\+\_\+value(hinfo\+\_\+t $\ast$hi, char $\ast$str)}{http_value(hinfo_t *hi, char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ http\+\_\+value (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi, }
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a142e7c44af77016bb329676f4466da7e}{}\label{web_8h_a142e7c44af77016bb329676f4466da7e}


Lookup and argument name and return its value. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & string to lookup \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value 
\end{DoxyReturn}


Definition at line 1422 of file web.\+c.

\index{web.\+h@{web.\+h}!init\+\_\+hinfo@{init\+\_\+hinfo}}
\index{init\+\_\+hinfo@{init\+\_\+hinfo}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{init\+\_\+hinfo(hinfo\+\_\+t $\ast$hi)}{init_hinfo(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void init\+\_\+hinfo (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a9022b922953aabe534b7b68e6f3a90af}{}\label{web_8h_a9022b922953aabe534b7b68e6f3a90af}
Initilize \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure pointer to initialize \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{structhinfo__t}{hinfo\+\_\+t} structure pointer to initialize 
\end{DoxyReturn}


Definition at line 1055 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!is\+\_\+cgitoken@{is\+\_\+cgitoken}}
\index{is\+\_\+cgitoken@{is\+\_\+cgitoken}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{is\+\_\+cgitoken(char $\ast$str)}{is_cgitoken(char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int is\+\_\+cgitoken (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a048ebac3422330a50ba449d817ff49d8}{}\label{web_8h_a048ebac3422330a50ba449d817ff49d8}


Does the string have a C\+GI T\+O\+K\+EN at the beginning ? C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. 

/$\ast$$\ast$ \begin{DoxyReturn}{Returns}
size of token or -\/1 on fail 
\end{DoxyReturn}


Definition at line 2051 of file web.\+c.

\index{web.\+h@{web.\+h}!is\+\_\+cgitoken\+\_\+char@{is\+\_\+cgitoken\+\_\+char}}
\index{is\+\_\+cgitoken\+\_\+char@{is\+\_\+cgitoken\+\_\+char}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{is\+\_\+cgitoken\+\_\+char(int c)}{is_cgitoken_char(int c)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int is\+\_\+cgitoken\+\_\+char (
\begin{DoxyParamCaption}
\item[{int}]{c}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a4abb48d4494fe24bdb3966a30a380f94}{}\label{web_8h_a4abb48d4494fe24bdb3966a30a380f94}


test to see if a character is a valid member of the C\+GI token character set C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em c} & character to test \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 if the character is a C\+GI token or 0 if not 
\end{DoxyReturn}


Definition at line 1999 of file web.\+c.

\index{web.\+h@{web.\+h}!is\+\_\+header@{is\+\_\+header}}
\index{is\+\_\+header@{is\+\_\+header}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{is\+\_\+header(char $\ast$str, char $\ast$$\ast$p)}{is_header(char *str, char **p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int is\+\_\+header (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str, }
\item[{char $\ast$$\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_aac0e14d0751e24b7143060600fe7822a}{}\label{web_8h_aac0e14d0751e24b7143060600fe7822a}


Does the string look like a header token with a \textquotesingle{}\+:\textquotesingle{} ? 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$str} & string to test \\
\hline
\mbox{\tt in}  & {\em $\ast$$\ast$p} & string pointer to set on match \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 if it looks like a header, otherwise 0 
\end{DoxyReturn}


Definition at line 1451 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!led\+\_\+off@{led\+\_\+off}}
\index{led\+\_\+off@{led\+\_\+off}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{led\+\_\+off(int led)}{led_off(int led)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void led\+\_\+off (
\begin{DoxyParamCaption}
\item[{int}]{led}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_aec67a5a0b10a3ad2bbfe81de832ef239}{}\label{web_8h_aec67a5a0b10a3ad2bbfe81de832ef239}


Turn off virtual L\+ED. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em led} & led to turn off \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 384 of file web.\+c.

\index{web.\+h@{web.\+h}!led\+\_\+on@{led\+\_\+on}}
\index{led\+\_\+on@{led\+\_\+on}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{led\+\_\+on(int led)}{led_on(int led)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void led\+\_\+on (
\begin{DoxyParamCaption}
\item[{int}]{led}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_aaaac061db0c7646d5b6c8bdfe3089ae7}{}\label{web_8h_aaaac061db0c7646d5b6c8bdfe3089ae7}


Definition at line 374 of file web.\+c.

\index{web.\+h@{web.\+h}!match\+\_\+headers@{match\+\_\+headers}}
\index{match\+\_\+headers@{match\+\_\+headers}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{match\+\_\+headers(char $\ast$str, char $\ast$$\ast$p)}{match_headers(char *str, char **p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int match\+\_\+headers (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str, }
\item[{char $\ast$$\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a93274f0048175d7ed429598e951a2c77}{}\label{web_8h_a93274f0048175d7ed429598e951a2c77}


Match G\+E\+T/\+P\+O\+ST message headers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$str} & string to patch \\
\hline
\mbox{\tt in}  & {\em $\ast$$\ast$p} & points past matched string on sucess \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
header index or -\/1 on no match 
\end{DoxyReturn}


Definition at line 1077 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!memgets@{memgets}}
\index{memgets@{memgets}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{memgets(mem\+\_\+t $\ast$p)}{memgets(mem_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ memgets (
\begin{DoxyParamCaption}
\item[{{\bf mem\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_ad834fe4d9506060f80d873fb20c186d5}{}\label{web_8h_ad834fe4d9506060f80d873fb20c186d5}


Memory gets function We A\+S\+S\+U\+ME we can replace any ~\newline
 with a \textbackslash{}0. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & structure with size and offset used by mem\+\_\+gets() \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to string 
\end{DoxyReturn}


Definition at line 952 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!meminit@{meminit}}
\index{meminit@{meminit}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{meminit(mem\+\_\+t $\ast$p, char $\ast$ptr, int size)}{meminit(mem_t *p, char *ptr, int size)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ meminit (
\begin{DoxyParamCaption}
\item[{{\bf mem\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{ptr, }
\item[{int}]{size}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a2ea8a8e37ac5c7099311e4d9cdb77efb}{}\label{web_8h_a2ea8a8e37ac5c7099311e4d9cdb77efb}


in memory memory gets function 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & structure with size and offset used by mem\+\_\+gets() \\
\hline
\mbox{\tt in}  & {\em ptr} & start of memory area \\
\hline
\mbox{\tt in}  & {\em size} & size of memory area \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to start of memory area (ptr) 
\end{DoxyReturn}


Definition at line 933 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!mime\+\_\+type@{mime\+\_\+type}}
\index{mime\+\_\+type@{mime\+\_\+type}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{mime\+\_\+type(int type)}{mime_type(int type)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ mime\+\_\+type (
\begin{DoxyParamCaption}
\item[{int}]{type}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_ae16ca93f35df1d6e5040aa464fec44ab}{}\label{web_8h_ae16ca93f35df1d6e5040aa464fec44ab}


return strung pointer for mime type index 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em type} & index into mim\+\_\+type table \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to string, if out of range uses index P\+T\+Y\+P\+E\+\_\+\+E\+RR 
\end{DoxyReturn}


Definition at line 983 of file web.\+c.



Referenced by html\+\_\+head(), and html\+\_\+msg().

\index{web.\+h@{web.\+h}!next\+\_\+arg@{next\+\_\+arg}}
\index{next\+\_\+arg@{next\+\_\+arg}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{next\+\_\+arg(hinfo\+\_\+t $\ast$hi)}{next_arg(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ next\+\_\+arg (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_ac2b1c83b2901da05a13fbc48e9c9f030}{}\label{web_8h_ac2b1c83b2901da05a13fbc48e9c9f030}


Find next P\+O\+S\+T/\+G\+ET argument We have to skip a name and a value. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value pair 
\end{DoxyReturn}


Definition at line 1247 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!nextbreak@{nextbreak}}
\index{nextbreak@{nextbreak}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{nextbreak(char $\ast$ptr)}{nextbreak(char *ptr)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ nextbreak (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ptr}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a1723d513f866e03e8195adf0139b1603}{}\label{web_8h_a1723d513f866e03e8195adf0139b1603}


Find next space or ? character. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$ptr} & string to search \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
first space or ? character 
\end{DoxyReturn}


Definition at line 1476 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!parse\+\_\+http\+\_\+request@{parse\+\_\+http\+\_\+request}}
\index{parse\+\_\+http\+\_\+request@{parse\+\_\+http\+\_\+request}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{parse\+\_\+http\+\_\+request(rwbuf\+\_\+t $\ast$p, hinfo\+\_\+t $\ast$hi)}{parse_http_request(rwbuf_t *p, hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int parse\+\_\+http\+\_\+request (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a574da7d2e02f16c3ff0727061b90c46c}{}\label{web_8h_a574da7d2e02f16c3ff0727061b90c46c}


Get arguments for a G\+ET or P\+O\+ST request. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to socket buffer \\
\hline
\mbox{\tt in}  & {\em $\ast$hi} & header structure of parsed result \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on error, 1 on success 
\end{DoxyReturn}
We must respond with Connection\+: keep-\/alive now 

Definition at line 1535 of file web.\+c.

\index{web.\+h@{web.\+h}!process\+\_\+args@{process\+\_\+args}}
\index{process\+\_\+args@{process\+\_\+args}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{process\+\_\+args(hinfo\+\_\+t $\ast$hi, char $\ast$ptr)}{process_args(hinfo_t *hi, char *ptr)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ process\+\_\+args (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi, }
\item[{char $\ast$}]{ptr}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_ab29b4d9382acde5a32fa0aad1068c38b}{}\label{web_8h_ab29b4d9382acde5a32fa0aad1068c38b}


Process G\+ET argments or P\+O\+ST message name/value data. H\+T\+ML encoding is done in place often reducting the size of the result. Convert name=value pairs into null terminated strings. Names and values are each terminated with an E\+OS by replaceing \textquotesingle{}?\textquotesingle{}, \textquotesingle{}\&\textquotesingle{}, \textquotesingle{}=\textquotesingle{} characters seen while scaning. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure to fill \\
\hline
\mbox{\tt in}  & {\em $\ast$ptr} & G\+ET arguments or P\+UT message body. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
$\ast$ptr pointer that points to just past the header area. 
\end{DoxyReturn}


Definition at line 1116 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+h@{web.\+h}!rewrite\+\_\+cgi\+\_\+token@{rewrite\+\_\+cgi\+\_\+token}}
\index{rewrite\+\_\+cgi\+\_\+token@{rewrite\+\_\+cgi\+\_\+token}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{rewrite\+\_\+cgi\+\_\+token(rwbuf\+\_\+t $\ast$p, char $\ast$src)}{rewrite_cgi_token(rwbuf_t *p, char *src)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int rewrite\+\_\+cgi\+\_\+token (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{src}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_abfb5be0ab21dfe56bc934a8965154384}{}\label{web_8h_abfb5be0ab21dfe56bc934a8965154384}


Replace C\+GI token with C\+GI result C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & socket stream \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & string with token, example @ \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
length of replaced text or 0 if no C\+GI handler was matched 
\end{DoxyReturn}


Definition at line 2093 of file web.\+c.

\index{web.\+h@{web.\+h}!rwbuf\+\_\+create@{rwbuf\+\_\+create}}
\index{rwbuf\+\_\+create@{rwbuf\+\_\+create}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+create(void)}{rwbuf_create(void)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} {\bf rwbuf\+\_\+t}$\ast$ rwbuf\+\_\+create (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a0768c5077e8cfa177735808798193071}{}\label{web_8h_a0768c5077e8cfa177735808798193071}


Create socket read/write buffer for a connection. 

\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 526 of file web.\+c.



Referenced by create\+\_\+connection().

\index{web.\+h@{web.\+h}!rwbuf\+\_\+delete@{rwbuf\+\_\+delete}}
\index{rwbuf\+\_\+delete@{rwbuf\+\_\+delete}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+delete(rwbuf\+\_\+t $\ast$p)}{rwbuf_delete(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void rwbuf\+\_\+delete (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_af089b318dcc1ebbec17ae7392a19e457}{}\label{web_8h_af089b318dcc1ebbec17ae7392a19e457}


Delete socket read/write buffers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to buffer to delete \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 487 of file web.\+c.



Referenced by delete\+\_\+connection(), and rwbuf\+\_\+create().

\index{web.\+h@{web.\+h}!rwbuf\+\_\+rinit@{rwbuf\+\_\+rinit}}
\index{rwbuf\+\_\+rinit@{rwbuf\+\_\+rinit}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+rinit(rwbuf\+\_\+t $\ast$p)}{rwbuf_rinit(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void rwbuf\+\_\+rinit (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_ac827567ee25b284c2992fed88249ab96}{}\label{web_8h_ac827567ee25b284c2992fed88249ab96}


Initialize socket read status and read index. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 439 of file web.\+c.



Referenced by rwbuf\+\_\+create(), rwbuf\+\_\+delete(), and web\+\_\+data\+\_\+receive\+\_\+callback().

\index{web.\+h@{web.\+h}!rwbuf\+\_\+winit@{rwbuf\+\_\+winit}}
\index{rwbuf\+\_\+winit@{rwbuf\+\_\+winit}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+winit(rwbuf\+\_\+t $\ast$p)}{rwbuf_winit(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void rwbuf\+\_\+winit (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a6a137266340baece84e055b2d49cd0c2}{}\label{web_8h_a6a137266340baece84e055b2d49cd0c2}


Initialize socket send status and write index. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 453 of file web.\+c.



Referenced by rwbuf\+\_\+create(), rwbuf\+\_\+delete(), and web\+\_\+data\+\_\+sent\+\_\+callback().

\index{web.\+h@{web.\+h}!sock\+\_\+printf@{sock\+\_\+printf}}
\index{sock\+\_\+printf@{sock\+\_\+printf}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{sock\+\_\+printf(rwbuf\+\_\+t $\ast$p, const char $\ast$fmt,...)}{sock_printf(rwbuf_t *p, const char *fmt,...)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int sock\+\_\+printf (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{const char $\ast$}]{fmt, }
\item[{}]{...}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a38a7c7d1f5222edff77e9a7a20195696}{}\label{web_8h_a38a7c7d1f5222edff77e9a7a20195696}


sock\+\_\+printf function 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & socket buffer structure \\
\hline
\mbox{\tt in}  & {\em fmt} & printf format string \\
\hline
\mbox{\tt in}  & {\em ...} & list of arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
bytes written 
\end{DoxyReturn}


Definition at line 830 of file web.\+c.



Referenced by html\+\_\+head().

\index{web.\+h@{web.\+h}!u5toa@{u5toa}}
\index{u5toa@{u5toa}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{u5toa(char $\ast$ptr, uint16\+\_\+t num)}{u5toa(char *ptr, uint16_t num)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void u5toa (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ptr, }
\item[{{\bf uint16\+\_\+t}}]{num}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a099953c3f11ff53e89c99b0be5212b70}{}\label{web_8h_a099953c3f11ff53e89c99b0be5212b70}


Print a decimal number into a string without an E\+OS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$ptr} & buffer to write number to \\
\hline
\mbox{\tt in}  & {\em num} & number to convet \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 1497 of file web.\+c.



Referenced by html\+\_\+msg().

\index{web.\+h@{web.\+h}!vsock\+\_\+printf@{vsock\+\_\+printf}}
\index{vsock\+\_\+printf@{vsock\+\_\+printf}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{vsock\+\_\+printf(rwbuf\+\_\+t $\ast$p, const char $\ast$fmt, va\+\_\+list va)}{vsock_printf(rwbuf_t *p, const char *fmt, va_list va)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int vsock\+\_\+printf (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{const char $\ast$}]{fmt, }
\item[{va\+\_\+list}]{va}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a912affa80386fb06e19c3ce5342701f5}{}\label{web_8h_a912affa80386fb06e19c3ce5342701f5}


vsock\+\_\+printf function 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & socket buffer structure \\
\hline
\mbox{\tt in}  & {\em fmt} & printf format string \\
\hline
\mbox{\tt in}  & {\em va} & va\+\_\+list of arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
bytes written 
\end{DoxyReturn}


Definition at line 808 of file web.\+c.



Referenced by sock\+\_\+printf().

\index{web.\+h@{web.\+h}!wait\+\_\+send@{wait\+\_\+send}}
\index{wait\+\_\+send@{wait\+\_\+send}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{wait\+\_\+send(rwbuf\+\_\+t $\ast$p)}{wait_send(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int wait\+\_\+send (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a6b59ca0b6eea0b246eb56ae2b37ee2d8}{}\label{web_8h_a6b59ca0b6eea0b246eb56ae2b37ee2d8}


Wait for buffer to send for this connection If write\+\_\+buffer sending flag is set then wait for it to clear. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
sent buffer size or -\/1 on error 
\end{DoxyReturn}


Definition at line 195 of file web.\+c.



Referenced by write\+\_\+buffer(), and write\+\_\+flush().

\index{web.\+h@{web.\+h}!web\+\_\+init@{web\+\_\+init}}
\index{web\+\_\+init@{web\+\_\+init}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{web\+\_\+init(int port)}{web_init(int port)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+init (
\begin{DoxyParamCaption}
\item[{int}]{port}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_aa7a1c2f567713688983ddecf9fa0d8d6}{}\label{web_8h_aa7a1c2f567713688983ddecf9fa0d8d6}


Setup W\+EB server and accept connections. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em port} & port number to run web server on \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 2490 of file web.\+c.



Referenced by setup().

\index{web.\+h@{web.\+h}!web\+\_\+init\+\_\+connections@{web\+\_\+init\+\_\+connections}}
\index{web\+\_\+init\+\_\+connections@{web\+\_\+init\+\_\+connections}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{web\+\_\+init\+\_\+connections(void)}{web_init_connections(void)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+init\+\_\+connections (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a0981a27ccb83326c4e96a0859f6511b5}{}\label{web_8h_a0981a27ccb83326c4e96a0859f6511b5}


Definition at line 2475 of file web.\+c.

\index{web.\+h@{web.\+h}!web\+\_\+sep@{web\+\_\+sep}}
\index{web\+\_\+sep@{web\+\_\+sep}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{web\+\_\+sep(void)}{web_sep(void)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+sep (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a32080fe9d866898d9fb3dce10079b1ff}{}\label{web_8h_a32080fe9d866898d9fb3dce10079b1ff}


printer seperator 

\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 182 of file web.\+c.



Referenced by tcp\+\_\+accept().

\index{web.\+h@{web.\+h}!web\+\_\+task@{web\+\_\+task}}
\index{web\+\_\+task@{web\+\_\+task}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{web\+\_\+task(void)}{web_task(void)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+task (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a8914bb442212946291b6afbf4f3e728e}{}\label{web_8h_a8914bb442212946291b6afbf4f3e728e}


Process A\+LL incoming H\+T\+TP requests. 

\begin{DoxySeeAlso}{See also}
\hyperlink{web_8c_a83e96b326e5d0ef41c95a83d510705dc}{process\+\_\+requests()} 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 2441 of file web.\+c.



Referenced by loop\+\_\+wrapper().

\index{web.\+h@{web.\+h}!write\+\_\+buffer@{write\+\_\+buffer}}
\index{write\+\_\+buffer@{write\+\_\+buffer}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{write\+\_\+buffer(rwbuf\+\_\+t $\ast$p)}{write_buffer(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int write\+\_\+buffer (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_ab32eaeba7482e80dde268638c1514a6d}{}\label{web_8h_ab32eaeba7482e80dde268638c1514a6d}


Socket write buffer for this connection We wait for previous send to complete -\/ then send any new data We do not wait for new data to finish sending -\/ you use flush for that. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
size of data in buffer or -\/1 on error 
\end{DoxyReturn}


Definition at line 266 of file web.\+c.



Referenced by write\+\_\+flush().

\index{web.\+h@{web.\+h}!write\+\_\+byte@{write\+\_\+byte}}
\index{write\+\_\+byte@{write\+\_\+byte}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{write\+\_\+byte(rwbuf\+\_\+t $\ast$p, int c)}{write_byte(rwbuf_t *p, int c)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int write\+\_\+byte (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{int}]{c}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a50c911d56af7c50bc045cffb983d76f0}{}\label{web_8h_a50c911d56af7c50bc045cffb983d76f0}


Write a byte (buffered) using the \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} socket buffers for this connection If the buffers are full the socket is written using write\+\_\+flush. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\mbox{\tt in}  & {\em 1} & on success 0 on fail \\
\hline
\end{DoxyParams}


Definition at line 339 of file web.\+c.



Referenced by \+\_\+write\+\_\+byte\+\_\+fn(), write\+\_\+len(), and write\+\_\+str().

\index{web.\+h@{web.\+h}!write\+\_\+flush@{write\+\_\+flush}}
\index{write\+\_\+flush@{write\+\_\+flush}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{write\+\_\+flush(rwbuf\+\_\+t $\ast$p)}{write_flush(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int write\+\_\+flush (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a5e0970f0d980f87fb5524a757f96fa84}{}\label{web_8h_a5e0970f0d980f87fb5524a757f96fa84}


Write all outstanding data and wait for it to send. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 323 of file web.\+c.



Referenced by write\+\_\+byte().

\index{web.\+h@{web.\+h}!write\+\_\+len@{write\+\_\+len}}
\index{write\+\_\+len@{write\+\_\+len}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{write\+\_\+len(rwbuf\+\_\+t $\ast$p, char $\ast$str, int len)}{write_len(rwbuf_t *p, char *str, int len)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void write\+\_\+len (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{str, }
\item[{int}]{len}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a751d54408d691ebc079108ffc42ee436}{}\label{web_8h_a751d54408d691ebc079108ffc42ee436}


Write data using buffered write\+\_\+byte function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & data buffer to write \\
\hline
\mbox{\tt in}  & {\em len} & number of bytes to write \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 758 of file web.\+c.



Referenced by html\+\_\+msg().

\index{web.\+h@{web.\+h}!write\+\_\+str@{write\+\_\+str}}
\index{write\+\_\+str@{write\+\_\+str}!web.\+h@{web.\+h}}
\subsubsection[{\texorpdfstring{write\+\_\+str(rwbuf\+\_\+t $\ast$p, char $\ast$str)}{write_str(rwbuf_t *p, char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void write\+\_\+str (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8h_a2a5efc80e175181baf607f7f9a1358e5}{}\label{web_8h_a2a5efc80e175181baf607f7f9a1358e5}


Write string using buffered write\+\_\+byte function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & 0 terminated string to write \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 774 of file web.\+c.

